package datastructure.ch05_queues.ch02_interface_abstarct;

/**
 * 双端队列
 *
 * @author guodd
 * @version 1.0
 */
public interface Deque<E> {
    /**
     * 获取队列中元素的个数
     *
     * @return 元素个数
     */
    int size();

    /**
     * 判断队列是否为空
     *
     * @return 是否为空
     */
    boolean isEmpty();

    /**
     * 清空队列
     */
    void clear();

    /**
     * 两端入队
     *
     * @param e 出对元素
     */
    void enqueueFront(E e);

    void enqueueTail(E e);

    /**
     * 两端出队
     *
     * @return 出队对头元素
     */
    E dequeueFront();

    E dequeueTail();

    /**
     * 获取两端元素
     *
     * @return 对头元素
     */
    E getFront();

    E getTail();

}
